function withLogging(value, context) {
  console.log(value, 'value')
  console.log(context, 'context')

  context.addInitializer(function () {
    console.log('类或属性定义时执行的额外逻辑', this)
  })
}

// 类装饰中使用了 context.addInitializer 函数 
// 类在定义完毕后会执行 context.addInitializer 函数中的回调函数
// @withLogging
// class MyClass {
//   constructor() {
//     console.log('constructor')
//   }
// }


// class MyClass {
//   // 属性装饰器 context.addInitializer 函数中的回调函数 会在实例化前调用
//   @withLogging a = 1

//   constructor() {
//     console.log('constructor')
//   }
// }
// new MyClass()


// class MyClass {
//   constructor() {
//     console.log('constructor')
//   }

//   // 给类中的方法添加方法装饰器
//   // 方法装饰器中的 context.addInitializer 函数中的回调函数会在实例化前调用
//   @withLogging hello() {

//   }
// }
// new MyClass


// class MyClass {
//   constructor() {
//     console.log('constructor')
//   }

//   // 给类中的访问器添加访问器装饰器
//   // 访问器装饰器中的 context.addInitializer 函数中的回调函数会在实例化前调用
//   @withLogging
//   get a() {
//     return 1
//   }
// }
// new MyClass()


